=begin pod :kind("Language") :subkind("Language") :category("reference")

=TITLE Community

=SUBTITLE Information about the people working on and using Raku

=head1 Overview

"Perl 5 was my rewrite of Perl.  I want Perl 6 to be the community's rewrite
of Perl and of the community." - Larry Wall (circa 2000)

"I am in favor of this change [a community driven renaming from Perl 6 to Raku], because it reflects an ancient wisdom:
'No one sews a patch of unshrunk cloth on an old garment, for the patch will pull away from
the garment, making the tear worse. Neither do people pour new wine into old wineskins.
If they do, the skins will burst; the wine will run out and the wineskins will be ruined.
No, they pour new wine into new wineskins, and both are preserved.'" - Larry Wall
(L<2019|https://github.com/Raku/problem-solving/pull/89#pullrequestreview-300789072>)

=head1 The Raku community

=head2 Online communities

Online interaction takes place mainly on the Internet Relay Chat,
L<IRC|/language/glossary#index-entry-IRC>.

The C<#raku> channel was created in October 2019, and will become more active as
it becomes the default channel. Eventually, connections to the C<#perl6> will be
redirected to C<#raku>, but the historical logs will remain on the C<#perl6>
channel. The L<C<#raku>|https://raku.org/community/irc> channel on
C<libera.chat> has a large presence with many developers, who are happy to
provide support and answer questions, or just use it as a friendly place to hang
out. Check out this
L<IRC lingo|http://www.ircbeginner.com/ircinfo/abbreviations.html> resource for the
abbreviations frequently used there.

L<StackOverflow|https://stackoverflow.com/questions/tagged/raku> is also a great
resource for asking questions and helping others with their Raku problems and
challenges. More resources can be found in the
L<raku.org community page|https://raku.org/community/>.

=head2 IRC bots

The IRC channel has some very interesting bots. This is a full list with the name of the bot, a link to more information
and a short description.

=begin item
B<benchable> (L<details|https://github.com/Raku/whateverable/wiki/Benchable>)

An IRC bot for benchmarking code at a given commit of Rakudo. It
can be addressed by its full name ('benchable6') or its short name
('bench'). It will run the given code five times and return the
minimum amount of time taken.
=end item

=begin item
B<bisectable> (L<details|https://github.com/Raku/whateverable/wiki/Bisectable>)

This bot is meant to help you find when something got broken. If
you want to know if something has ever worked use Committable
instead.
=end item

=begin item
B<bloatable> (L<details|https://github.com/Raku/whateverable/wiki/Bloatable>)

An IRC bot for running bloaty on libmoar.so files of MoarVM. It can
be addressed by its full name ('bloatable6') or its short name
('bloat' or 'bloaty'). It will run bloaty and pass one or more
libmoar.so files from different revisions of MoarVM.
=end item

=begin item
B<buggable> (L<details|https://github.com/zoffixznet/perl6-buggable>)

RT queue search and utility bot.
=end item

=begin item
B<camelia>

Raku code evaluation bot. We use this for live testing of code
that may be of interest to others; it chats back to the channel.
C<raku: my $a>
will result in a test against the latest revisions of rakudo and niecza,
C<nqp: say('foo')>
will test nqp,
C<std: my $a>
will parse the expression using STD.pm6. For other compilers, try C<camelia: help>.
=end item

=begin item
B<committable> (L<details|https://github.com/Raku/whateverable/wiki/Committable>)

An IRC bot for running code at a given commit of Rakudo. It can be
addressed by its full name ('committable6') or its short names
('commit', 'c').
=end item

=begin item
B<coverable> (L<details|https://github.com/Raku/whateverable/wiki/Coverable>)

An IRC bot for creating a coverage report of the Rakudo (and NQP)
source lines that were hit while running the code you give it. The
first option is the commit, the second (optional) option is the
filter for what lines of the MoarVM-generated coverage log you
want, the third is the code to run.
=end item

=begin item
B<Geth> (L<details|https://github.com/Raku/geth>)

Announces commits made to various projects relevant to Raku, such
as implementations of Raku and some of the
L<repositories owned by Raku|https://github.com/Raku/>.
=end item

=begin item
B<evalable> (L<details|https://github.com/Raku/whateverable/wiki/Evalable>)

Evalable is just Committable that defaults to C<HEAD>.
=end item

=begin item
B<greppable> (L<details|https://github.com/Raku/whateverable/wiki/Greppable>)

An IRC bot for grepping through the module ecosystem. It can be
addressed by its full name ('greppable6') or its short name
('grep').
=end item

=begin item
B<huggable> (L<details|https://github.com/zoffixznet/huggable>)

Let's you C<.hug> people in the channel.
=end item

=begin item
B<ilbot> (L<details|https://github.com/moritz/ilbot>)

IRC logging bot.
=end item

=begin item
B<nativecallable> (L<details|https://github.com/Raku/whateverable/wiki/Nativecallable>)

an IRC bot for generating Raku NativeCall code from C
definitions. It can be addressed by its full name
('nativecallable6') or its short name ('nativecall'). The bot is
using C<App::GPTrixie> to do the conversion.
=end item

=begin item
B<notable> (L<details|https://github.com/Raku/whateverable/wiki/Notable>)

an IRC bot for for noting things. It can be addressed by its full name ('notable6')
or its short name ('note'). There is also a “weekly:” shortcut.
=end item

=begin item
B<quotable> (L<details|https://github.com/Raku/whateverable/wiki/Quotable>)
 An IRC bot for searching messages in the IRC log. It can be
 addressed by its full name ('quotable6') or its short name
 ('quote').
=end item

=begin item
B<releasable> (L<details|https://github.com/Raku/whateverable/wiki/Releasable>)

An IRC bot for getting information about the upcoming release. It
can be addressed by its full name ('releasable6') or its short name
('release').

As a user, you are probably only interested in its only command
“status”. It tells when the next release is going to happen and how
many blockers are there.
=end item

=begin item
B<reportable> (L<details|https://github.com/Raku/whateverable/wiki/Reportable>)

An IRC bot for generating reports of changes in rakudo RT and GitHub issue trackers
(which issues were resolved, updated, rejected, etc.). It can be addressed by its full name
('reportable6') or its short name ('report'). It takes snapshots of issue trackers
periodically, and then you can ask it to generate a report for two given snapshots.

See also: L<Weekly, Monthly and Yearly reports|https://github.com/rakudo/rakudo/wiki/Ticket-updates>
=end item

=begin item
B<shareable> (L<details|https://github.com/Raku/whateverable/wiki/Shareable>)

An IRC bot for making rakudo builds produced by Whateverable publicly available.
It can be addressed by its full name ('shareable6').

Note that the build will be located
in C</tmp/whateverable/rakudo-moar/SOME-SHA/>. Also, as of today these files are only
useful for you if you're on linux x86_64.
=end item

=begin item
B<SourceBaby> (L<details|https://github.com/zoffixznet/perl6-sourceable>)

Core source code locator
=end item

=begin item
B<squashable> (L<details|https://github.com/Raku/whateverable/wiki/Squashable>)

An IRC bot for the Monthly Bug Squash Day (a.k.a. Community Bug
SQUASHathon). It can be addressed by its full name ('squashable6')
or its short name ('squash'). It can tell you when the next even is
going to happen and what's the current status of the active event.
Also, it will also announce changes to the repo.
=end item

=begin item
B<statisfiable> (L<details|https://github.com/Raku/whateverable/wiki/Statisfiable>)

An IRC bot that can gather stats across rakudo builds. It can be
addressed by its full name ('statisfiable6') or its short name
('stat'). For most commands it will reply with a gist that has a
graph and the raw data. Note that stats are cached, but it takes
some time for it to generate the graph, so be patient.
=end item

=begin item
B<synopsebot6> (L<details|https://github.com/perl6/synopsebot>)

Creates links to the synopses and turns mentions of RT ticket
numbers into clickable RT links.
=end item

=begin item
B<tellable> (L<details|https://github.com/Raku/whateverable/wiki/Tellable>)

An IRC bot for passing messages to users who are currently offline.
You can also use it to see when was the last time somebody talked.
=end item

=begin item
B<undersightable> (L<details|https://github.com/Raku/whateverable/wiki/Undersightable>)

An IRC bot for checking that important things are operating correctly (websites are up,
bots are online, released tarballs are correct, etc.). It can be addressed by its fullname
('undersightable6').
=end item

=begin item
B<unicodable> (L<details|https://github.com/Raku/whateverable/wiki/Unicodable>)

An IRC bot for getting interesting information about Unicode
characters. It can be addressed by its full name ('unicodable6') or
its short name ('u').
=end item

=begin item
B<PufferBot> (L<details|https://github.com/Kaiepi/p6-RakudoBot>)

An IRC bot for testing builds of Rakudo on OpenBSD. It can be
addressed by its full name ('PufferBot'). Talks only in
L<#raku-dev|https://web.libera.chat/?channel=#raku-dev>.
=end item

=begin item
B<BeastieBot> (L<details|https://github.com/Kaiepi/p6-RakudoBot>)

An IRC bot for testing builds of Rakudo on FreeBSD. It can be
addressed by its full name ('BeastieBot'). Talks only in
L<#raku-dev|https://web.libera.chat/?channel=#raku-dev>.
=end item


=head2 Offline communities

Raku is also a common topic at
L<Perl conferences|https://www.perl.org/events.html> and
L<Perl Monger meetings|https://www.pm.org/> and
L<other meetups|https://perl.meetup.com/>.
If you prefer in-person meetings, these are warmly recommended!

=head2 Other resources

L<Camelia|https://raku.org/>, the multi-color butterfly with P 6 in her wings, is the symbol of this diverse and welcoming community.

=head1 Rakudo Weekly

Elizabeth Mattijsen usually posts in L<the "Rakudo Weekly" blog|https://rakudoweekly.blog/>, a summary of Raku posts, tweets, comments and other interesting tidbits.
If you want a single resource to know what is going on in the Raku community now, this is your best resource.

Historical articles (pre name change) can be found archived on
L<the "Perl 6 Weekly" blog|https://p6weekly.wordpress.com/>.

=head1 Raku Advent calendar

The Raku community publishes every December an
L<Advent Calendar|https://raku-advent.blog/>, with Raku tutorials every day until
Christmas. Previous calendars (pre name change) are
L<still available|https://perl6advent.wordpress.com/> and relevant.

Organization and assignment of days is done through the different Raku channels and the
L<Raku/advent|https://github.com/Raku/advent> repository. If you want to
participate, its organization starts by the end of October, so check out
the channels above to keep up to date.

=comment HOW TO WRITE: One topic/point/idea per sentence, one sentence per line - to make diffs & translation easier.

=end pod

# vim: expandtab softtabstop=4 shiftwidth=4 ft=perl6
